/**
 * 用户详情对话框（可用于添加和修改对话框）
 */
var UserInfoDlg = {
    userInfoData: {},
    index:99,
    validateFields: {
        loginName: {
            validators: {
                notEmpty: {
                    message: '登录名不能为空'
                }
            }
        },
        userCode: {
            validators: {
                notEmpty: {
                    message: '工号不能为空'
                }
            }
        },
        name: {
            validators: {
                notEmpty: {
                    message: '姓名不能为空'
                }
            }
        },
        deptSel: {
            validators: {
                notEmpty: {
                    message: '主部门不能为空'
                }
            }
        },
        password: {
            validators: {
                notEmpty: {
                    message: '密码不能为空'
                },
                identical: {
                    field: 'rePassword',
                    message: '两次密码不一致'
                }
            }
        },
        rePassword: {
            validators: {
                notEmpty: {
                    message: '密码不能为空'
                },
                identical: {
                    field: 'password',
                    message: '两次密码不一致'
                }
            }
        }
    }
};

/**
 * 清除数据
 */
UserInfoDlg.clearData = function () {
    this.userInfoData = {};
};

/**
 * 设置对话框中的数据
 *
 * @param key 数据的名称
 * @param val 数据的具体值
 */
UserInfoDlg.set = function (key, value) {
        this.userInfoData[key] = (typeof value == "undefined") ? $("#" + key).val() : value;
    return this;
};

/**
 * 设置对话框中的数据
 *
 * @param key 数据的名称
 * @param val 数据的具体值
 */
UserInfoDlg.get = function (key) {
    return $("#" + key).val();
};

/**
 * 关闭此对话框
 */
UserInfoDlg.close = function () {
    parent.layer.close(window.parent.MgrUser.layerIndex);
};

/**
 * 显示部门选择的树
 *
 * @returns
 */
UserInfoDlg.showDeptSelectTree = function (obj) {
	var _text_id = $(obj).attr("id");
	var _value_id = $(obj).attr("id")+"_id";
	var ids = $("#"+_value_id).val();
	var isMulti = false;
	var opt = {
            type: 2,
            title: '选择部门',
            area: ['300px', '450px'], //宽高
            fix: false, //不固定
            maxmin: true,
            content: '/static/common/_selecttree.html',
            success: function(layero, index){
                var iframeWin = window[layero.find('iframe')[0]['name']]; //得到iframe页的窗口对象，执行iframe页的方法：iframeWin.method();
                iframeWin.initTree(Sys.backendPath + "/dept/tree",isMulti,ids);
            }
        }
	opt["btn"]=[];
	opt.btn.push('<i class="fa fa-check"></i> 确定');
	opt['btn'+opt.btn.length] = function(index, layero){
        var win = window[layero.find('iframe')[0]['name']];
		win.$('#keyword').val('').change();
		var codes = [], names = [], nodes;
		if (isMulti){
			nodes = win.tree.getCheckedNodes(true);
		}else{
			nodes = win.tree.getSelectedNodes();
		}
		for(var i=0; i<nodes.length; i++) {
			var code = (nodes[i].value || nodes[i].id)+"", name = nodes[i].name;
			codes.push(code.replace(/^u_/g,''));
			names.push(name.replace(/\([0-9]*\)/g,''));
		}
		$("#"+_value_id).val(codes.join(',')).change();
		$("#"+_text_id).val(names.join(',')).change();
        layer.close(index);
	};

	opt.btn.push('<i class="fa fa-eraser"></i> 清除');
	opt['btn'+opt.btn.length] = function(index, layero){
		$("#"+_value_id).val('').change();
		$("#"+_text_id).val('').change();
	};

	opt.btn.push('<i class="fa fa-close"></i> 关闭');
	opt['btn'+opt.btn.length] = function(index, layero){
        var index = layer.getFrameIndex(layero.find('iframe')[0]['name']); //获取窗口索引
        layer.close(index);
	};

    layer.open(opt);
};


/**
 * 显示角色选择的树
 *
 * @returns
 */
UserInfoDlg.showRoleSelectTree = function (obj) {
	var _text_id = $(obj).attr("id");
	var _value_id = $(obj).attr("id")+"_id";
	var ids = $("#"+_value_id).val();
	var isMulti = true;
	var opt = {
            type: 2,
            title: '选择角色',
            area: ['300px', '450px'], //宽高
            fix: false, //不固定
            maxmin: true,
            content: '/static/common/_selecttree.html',
            success: function(layero, index){
                var iframeWin = window[layero.find('iframe')[0]['name']]; //得到iframe页的窗口对象，执行iframe页的方法：iframeWin.method();
                iframeWin.initTree(Sys.backendPath + "/role/tree",isMulti,ids);
            }
        }
	opt["btn"]=[];
	opt.btn.push('<i class="fa fa-check"></i> 确定');
	opt['btn'+opt.btn.length] = function(index, layero){
        var win = window[layero.find('iframe')[0]['name']];
		win.$('#keyword').val('').change();
		var codes = [], names = [], nodes;
		if (isMulti){
			nodes = win.tree.getCheckedNodes(true);
		}else{
			nodes = win.tree.getSelectedNodes();
		}
		for(var i=0; i<nodes.length; i++) {
			if (nodes[i].level == 0 && nodes[i].isParent){
				Sys.info("不能选择根节点（"+nodes[i].name+"）请重新选择。");
				return false;
			}
			var code = (nodes[i].value || nodes[i].id)+"", name = nodes[i].name;
			codes.push(code.replace(/^u_/g,''));
			names.push(name.replace(/\([0-9]*\)/g,''));
		}
		$("#"+_value_id).val(codes.join(',')).change();
		$("#"+_text_id).val(names.join(',')).change();
        layer.close(index);
	};

	opt.btn.push('<i class="fa fa-eraser"></i> 清除');
	opt['btn'+opt.btn.length] = function(index, layero){
		$("#"+_value_id).val('').change();
		$("#"+_text_id).val('').change();
	};

	opt.btn.push('<i class="fa fa-close"></i> 关闭');
	opt['btn'+opt.btn.length] = function(index, layero){
        var index = layer.getFrameIndex(layero.find('iframe')[0]['name']); //获取窗口索引
        layer.close(index);
	};

    layer.open(opt);
};

/**
 * 收集数据
 */
UserInfoDlg.collectData = function () {
    this.set('id').set('loginName').set('userCode').set('password').set('avatar')
        .set('email').set('name').set('birthday').set('rePassword').set('phone').set('weight');
    var sexs =  $("input[name=sex]:checked").val();
    this.set('sex',sexs);
    this.userInfoData["positionId"] = $("#position").val();
	this.userInfoData["deptRole"] = UserInfoDlg.deptRoleVal();
};

/**
 * 验证两个密码是否一致
 */
UserInfoDlg.validatePwd = function () {
    var password = this.get("password");
    var rePassword = this.get("rePassword");
    if (password == rePassword) {
        return true;
    } else {
        return false;
    }
};

/**
 * 验证数据是否为空
 */
UserInfoDlg.validate = function () {
    $('#userInfoForm').data("bootstrapValidator").resetForm();
    $('#userInfoForm').bootstrapValidator('validate');
    return $("#userInfoForm").data('bootstrapValidator').isValid();
};

/**
 * 提交添加用户
 */
UserInfoDlg.addSubmit = function () {

    this.clearData();
    this.collectData();
    if (!this.validate()) {
        return;
    }
    if ($('#dept').val()=="") {
        Sys.error("主部门不能为空！");
        return;
    }

    if (!this.validatePwd()) {
        Sys.error("两次密码输入不一致！");
        return;
    }
    
    if (!this.validateDeptRole()) {
        Sys.error("兼职部门重复！");
        return;
    }

    //提交信息
    var ajax = new $ax(Sys.backendPath + "/user/add", function (data) {
        Sys.success("添加成功!");
        window.parent.MgrUser.table.refresh();
        UserInfoDlg.close();
    }, function (data) {
        Sys.error("添加失败!" + data.responseJSON.message + "!");
    });
    ajax.set(this.userInfoData);
    ajax.start();
};

/**
 * 提交修改
 */
UserInfoDlg.editSubmit = function () {
    this.clearData();
    this.collectData();
    if (!this.validate()) {
        return;
    }
    
    if (!this.validateDeptRole()) {
        Sys.error("兼职部门重复！");
        return;
    }

    //提交信息
    var ajax = new $ax(Sys.backendPath + "/user/edit", function (data) {
        Sys.success("修改成功!");
        if(window.parent.MgrUser != undefined){
            window.parent.MgrUser.table.refresh();
            UserInfoDlg.close();
        }
    }, function (data) {
        Sys.error("修改失败!" + data.responseJSON.message + "!");
    });
    ajax.set(this.userInfoData);
    ajax.start();
};

/**
 * 用户修改个人信息
 */
UserInfoDlg.personalEdit = function () {
    this.clearData();
    this.collectData();
    if (!this.validate()) {
        return;
    }

    //提交信息
    var ajax = new $ax(Sys.backendPath + "/user/edit", function (data) {
        Sys.success("修改成功!");
        if(window.parent.updateUserInf){
            window.parent.updateUserInf();
        };
        UserInfoDlg.returnUserInf();
    }, function (data) {
        Sys.error("修改失败!" + data.responseJSON.message + "!");
    });
    ajax.set(this.userInfoData);
    ajax.start();
};

UserInfoDlg.returnUserInf=function(){
	if(window.parent.to_open){
        window.parent.to_open(Sys.backendPath+"/personalcenter/user_inf");
    }
};

/**
 * 修改密码
 */
UserInfoDlg.chPwd = function () {
    var ajax = new $ax(Sys.backendPath + "/user/update_password", function (data) {
    	if(data.code==500){
    		Sys.error("修改失败!" + data.message + "!");
    	}else{
    		Sys.success("修改成功!");
    	}
        UserInfoDlg.returnUserInf();
    }, function (data) {
        Sys.error("修改失败!" + data.responseJSON.message + "!");
    });
    ajax.set("oldPwd");
    ajax.set("newPwd");
    ajax.set("rePwd");
    ajax.start();

};

UserInfoDlg.addItem = function () {
	var _html = '';
	_html += '<tr>';
	_html += '	<td>';
	_html += '		<input class="textbox" style="width:100%" id="dept_'+UserInfoDlg.index+'" type="text" readonly="readonly" onclick="UserInfoDlg.showDeptSelectTree(this);" style="background-color: #ffffff !important;">';
	_html += '		<input class="textbox" style="width:100%" type="hidden" id="dept_'+UserInfoDlg.index+'_id" name="dept_id">';
	_html += '	</td>';
	_html += '	<td>';
	_html += '		<input class="textbox" style="width:100%" id="role_'+UserInfoDlg.index+'" type="text" readonly="readonly" onclick="UserInfoDlg.showRoleSelectTree(this);" style="background-color: #ffffff !important;">';
	_html += '		<input class="textbox" style="width:100%" type="hidden" id="role_'+UserInfoDlg.index+'_id" name="role_id">';
	_html += '	</td>';
	_html += '	<td>';
	_html += '		<button type="button" class="btn btn-danger" onclick="UserInfoDlg.delItem(this)">';
	_html += ' 	  		<i class="fa fa-remove"></i>';
	_html += '		</button>';
	_html += '	</td>';
	_html += '</tr>';
	$("#_tbody").append(_html);
	UserInfoDlg.index++;
}

UserInfoDlg.delItem = function (obj) {
    $(obj).parent().parent().remove();
}

UserInfoDlg.deptRoleVal = function(){
	var _ja = [];
    $("#_tbody").find("tr").each(function(){
        var roleId = $(this).find("[name='role_id']").val();
        var deptId = $(this).find("[name='dept_id']").val();
        var _jo = {
        	roleIds:roleId,
        	deptId:deptId,
        	isPartTime:1,
        };
        _ja.push(_jo);
    });
    var roleId = $("#role_id").val();
    var deptId = $("#dept_id").val();
    var _jo = {
    	roleIds:roleId,
    	deptId:deptId,
    	isPartTime:0,
    };
    _ja.push(_jo);
    return JSON.stringify(_ja).replace(/\"/g,"\'");  
}

UserInfoDlg.validateDeptRole = function(){
	var _ja = {};
	var flag = true;
    var pdeptId = $("#dept_id").val();
    _ja["dept_"+pdeptId]=pdeptId;
    $("#_tbody").find("tr").each(function(){
        var deptId = $(this).find("[name='dept_id']").val();
        if(_ja["dept_"+deptId]){
        	flag = false;
        }
        _ja["dept_"+deptId]=deptId;
    });
    return flag;  
}
$(function () {
	Sys.initValidator("userInfoForm", UserInfoDlg.validateFields);
    //初始化性别选项
    $("#sex").val($("#sexValue").val());
});
